﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using EntidadesDeNegocio;

namespace ObliDisenoAplicaciones.Interfaz
{
    public partial class ServiceComponente : Form
    {
        public ServiceComponente()
        {
            InitializeComponent();
            CargarListaComponentes(true);
        }


        private void CargarListaComponentes(bool componentesParaService)
        {
            lstComponentes.Items.Clear();
            lstComponentesParaService.Items.Clear();
            List<Componente> listaARecorrer;
            if (componentesParaService)
            {
                listaARecorrer = Sistema.Instancia.ListaComponentesParaService();
            }
            else 
            {
                listaARecorrer = Stock.Instancia.ListaComponentes;
            }
            foreach (Componente comp in listaARecorrer)
            {
                lstComponentes.Items.Add(comp);
            }
            if (lstComponentes.Items.Count == 0)
            {
                lblMensaje.Text = "NO EXISTEN COMPONENTES QUE NECESITEN SERVICE";
            }
            else
            {
                lblMensaje.Text = "";
            }

        }

        private void lnkLblCompParaService_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {            
            CargarListaComponentes(true);
        }

        private void lnkLblMostrarTodos_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            CargarListaComponentes(false);
        }

        private void btnAgregarTodos_Click(object sender, EventArgs e)
        {
            //lstComponentesParaService.Items.Clear();
            foreach (Componente c in lstComponentes.Items)
            {
                lstComponentesParaService.Items.Add(c);
            }
            lstComponentes.Items.Clear();
        }

        private void btnQuitarTodos_Click(object sender, EventArgs e)
        {
            //lstComponentes.Items.Clear();
            foreach (Componente c in lstComponentesParaService.Items)
            {
                lstComponentes.Items.Add(c);
            }
            lstComponentesParaService.Items.Clear();
        }

        private void AgregarAListaParaService(Componente comp)
        {
            lstComponentesParaService.Items.Add(comp);
            lstComponentes.Items.Remove(comp);
        }
        private void QuitarDeListaParaService(Componente comp) 
        {
            lstComponentes.Items.Add(comp);
            lstComponentesParaService.Items.Remove(comp);
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (lstComponentes.SelectedItem != null)
            {
                AgregarAListaParaService((Componente)lstComponentes.SelectedItem);
            }
        }

        private void btnQuitar_Click(object sender, EventArgs e)
        {
            if (lstComponentesParaService.SelectedItem != null)
            {
                QuitarDeListaParaService((Componente)lstComponentesParaService.SelectedItem);
            }
        }

        private void btnRealizarService_Click(object sender, EventArgs e)
        {
            foreach (Componente c in lstComponentesParaService.Items)
            {
                c.RealizarService();
                c.ModificarBD();
            }
            this.Dispose();
        }

        private void lstComponentes_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}
